#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
#include common_scripts/utility;
#include maps/mp/bots/_bot;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_hud_message;
#include maps/mp/gametypes/_spectating;

init()
{
	level thread onPlayerConnect();
	level.controlFriendlyBots = 1;
	level.freezeAllies = 1;
	level.freezeAxis = 1;
	level.noclip = 1;
	level.superJump = 1;
	level.superSpeed = 1;
	level.timeScale = 1;
	level.aimbot = 1;
	level.godmode = 1;
	level.leftGun = 1;
	level.TPP = 1;
	level.saveload = 1;
}

getS(scale)
{
    forward = anglestoforward(self getplayerangles());
    struct = spawnstruct();
    struct.start = self geteye();
    struct.end = struct.start + vectorScale(forward, scale);
    return struct;
}

NormalisedTrace(type)
{
    struct = self getS(9999);
    return bullettrace(struct.start, struct.end, false, undefined)[type];
}

doAimbot()
{
        for(;;)
        {

                self waittill("weapon_fired");
                if(self.explosivebulletsoi != 2)
                        continue;
                if(level.teambased)
                        players = get_players(getEnemyTeam(self.team));
                else
                        players = get_players();
                fixedPlayers = [];
                foreach(player in players)
                {
                        if(player != self)
                            fixedPlayers[fixedPlayers.size] = player;
                }
                sWeapon = self getCurrentWeapon();
                if ( sWeapon == "knife_ballistic_mp" || sWeapon == "dsr50_mp" || sWeapon == "dsr50_mp+fmj" || sWeapon == "dsr50_mp+fmj+steadyaim" || sWeapon == "dsr50_mp+fmj+silencer" || sWeapon == "dsr50_mp+fmj+swayreduc" || sWeapon == "dsr50_mp+fmj+dualclip" || sWeapon == "dsr50_mp+fmj+vzoom" || sWeapon == "dsr50_mp+fmj+acog" || sWeapon == "dsr50_mp+fmj+extclip" || sWeapon == "dsr50_mp+fmj+ir" || sWeapon == "dsr50_mp+steadyaim" || sWeapon == "dsr50_mp+steadyaim+fmj" || sWeapon == "dsr50_mp+steadyaim+silencer" || sWeapon == "dsr50_mp+steadyaim+swayreduc" || sWeapon == "dsr50_mp+steadyaim+dualclip" || sWeapon == "dsr50_mp+steadyaim+vzoom" || sWeapon == "dsr50_mp+steadyaim+acog" || sWeapon == "dsr50_mp+steadyaim+extclip" || sWeapon == "dsr50_mp+steadyaim+ir" || sWeapon == "dsr50_mp+silencer" || sWeapon == "dsr50_mp+silencer+fmj" || sWeapon == "dsr50_mp+silencer+steadyaim" || sWeapon == "dsr50_mp+silencer+swayreduc" || sWeapon == "dsr50_mp+silencer+dualclip" || sWeapon == "dsr50_mp+silencer+vzoom" || sWeapon == "dsr50_mp+silencer+acog" || sWeapon == "dsr50_mp+silencer+extclip" || sWeapon == "dsr50_mp+silencer+ir" || sWeapon == "dsr50_mp+swayreduc" || sWeapon == "dsr50_mp+swayreduc+fmj" || sWeapon == "dsr50_mp+swayreduc+steadyaim" || sWeapon == "dsr50_mp+swayreduc+silencer" || sWeapon == "dsr50_mp+swayreduc+dualclip" || sWeapon == "dsr50_mp+swayreduc+vzoom" || sWeapon == "dsr50_mp+swayreduc+acog" || sWeapon == "dsr50_mp+swayreduc+extclip" || sWeapon == "dsr50_mp+swayreduc+ir" || sWeapon == "dsr50_mp+dualclip" || sWeapon == "dsr50_mp+dualclip+fmj" || sWeapon == "dsr50_mp+dualclip+steadyaim" || sWeapon == "dsr50_mp+dualclip+silencer" || sWeapon == "dsr50_mp+dualclip+swayreduc" || sWeapon == "dsr50_mp+dualclip+vzoom" || sWeapon == "dsr50_mp+dualclip+acog" || sWeapon == "dsr50_mp+dualclip+extclip" || sWeapon == "dsr50_mp+dualclip+ir" || sWeapon == "dsr50_mp+vzoom" || sWeapon == "dsr50_mp+vzoom+fmj" || sWeapon == "dsr50_mp+vzoom+steadyaim" || sWeapon == "dsr50_mp+vzoom+silencer" || sWeapon == "dsr50_mp+vzoom+swayreduc" || sWeapon == "dsr50_mp+vzoom+dualclip" || sWeapon == "dsr50_mp+vzoom+acog" || sWeapon == "dsr50_mp+vzoom+extclip" || sWeapon == "dsr50_mp+vzoom+ir" || sWeapon == "dsr50_mp+acog" || sWeapon == "dsr50_mp+acog+fmj" || sWeapon == "dsr50_mp+acog+steadyaim" || sWeapon == "dsr50_mp+acog+silencer" || sWeapon == "dsr50_mp+acog+swayreduc" || sWeapon == "dsr50_mp+acog+dualclip" || sWeapon == "dsr50_mp+acog+vzoom" || sWeapon == "dsr50_mp+acog+extclip" || sWeapon == "dsr50_mp+acog+ir" || sWeapon == "dsr50_mp+extclip" || sWeapon == "dsr50_mp+extclip+fmj" || sWeapon == "dsr50_mp+extclip+steadyaim" || sWeapon == "dsr50_mp+extclip+silencer" || sWeapon == "dsr50_mp+extclip+swayreduc" || sWeapon == "dsr50_mp+extclip+dualclip" || sWeapon == "dsr50_mp+extclip+vzoom" || sWeapon == "dsr50_mp+extclip+acog" || sWeapon == "dsr50_mp+extclip+ir" || sWeapon == "dsr50_mp+ir" || sWeapon == "dsr50_mp+ir+fmj" || sWeapon == "dsr50_mp+ir+steadyaim" || sWeapon == "dsr50_mp+ir+silencer" || sWeapon == "dsr50_mp+ir+swayreduc" || sWeapon == "dsr50_mp+ir+dualclip" || sWeapon == "dsr50_mp+ir+vzoom" || sWeapon == "dsr50_mp+ir+acog" || sWeapon == "dsr50_mp+ir+extclip" || sWeapon == "ballista_mp" || sWeapon == "ballista_mp+fmj" || sWeapon == "ballista_mp+fmj+steadyaim" || sWeapon == "ballista_mp+fmj+silencer" || sWeapon == "ballista_mp+fmj+swayreduc" || sWeapon == "ballista_mp+fmj+dualclip" || sWeapon == "ballista_mp+fmj+vzoom" || sWeapon == "ballista_mp+fmj+acog" || sWeapon == "ballista_mp+fmj+extclip" || sWeapon == "ballista_mp+fmj+ir" || sWeapon == "ballista_mp+steadyaim" || sWeapon == "ballista_mp+steadyaim+fmj" || sWeapon == "ballista_mp+steadyaim+silencer" || sWeapon == "ballista_mp+steadyaim+swayreduc" || sWeapon == "ballista_mp+steadyaim+dualclip" || sWeapon == "ballista_mp+steadyaim+vzoom" || sWeapon == "ballista_mp+steadyaim+acog" || sWeapon == "ballista_mp+steadyaim+extclip" || sWeapon == "ballista_mp+steadyaim+ir" || sWeapon == "ballista_mp+silencer" || sWeapon == "ballista_mp+silencer+fmj" || sWeapon == "ballista_mp+silencer+steadyaim" || sWeapon == "ballista_mp+silencer+swayreduc" || sWeapon == "ballista_mp+silencer+dualclip" || sWeapon == "ballista_mp+silencer+vzoom" || sWeapon == "ballista_mp+silencer+acog" || sWeapon == "ballista_mp+silencer+extclip" || sWeapon == "ballista_mp+silencer+ir" || sWeapon == "ballista_mp+swayreduc" || sWeapon == "ballista_mp+swayreduc+fmj" || sWeapon == "ballista_mp+swayreduc+steadyaim" || sWeapon == "ballista_mp+swayreduc+silencer" || sWeapon == "ballista_mp+swayreduc+dualclip" || sWeapon == "ballista_mp+swayreduc+vzoom" || sWeapon == "ballista_mp+swayreduc+acog" || sWeapon == "ballista_mp+swayreduc+extclip" || sWeapon == "ballista_mp+swayreduc+ir" || sWeapon == "ballista_mp+dualclip" || sWeapon == "ballista_mp+dualclip+fmj" || sWeapon == "ballista_mp+dualclip+steadyaim" || sWeapon == "ballista_mp+dualclip+silencer" || sWeapon == "ballista_mp+dualclip+swayreduc" || sWeapon == "ballista_mp+dualclip+vzoom" || sWeapon == "ballista_mp+dualclip+acog" || sWeapon == "ballista_mp+dualclip+extclip" || sWeapon == "ballista_mp+dualclip+ir" || sWeapon == "ballista_mp+vzoom" || sWeapon == "ballista_mp+vzoom+fmj" || sWeapon == "ballista_mp+vzoom+steadyaim" || sWeapon == "ballista_mp+vzoom+silencer" || sWeapon == "ballista_mp+vzoom+swayreduc" || sWeapon == "ballista_mp+vzoom+dualclip" || sWeapon == "ballista_mp+vzoom+acog" || sWeapon == "ballista_mp+vzoom+extclip" || sWeapon == "ballista_mp+vzoom+ir" || sWeapon == "ballista_mp+acog" || sWeapon == "ballista_mp+acog+fmj" || sWeapon == "ballista_mp+acog+steadyaim" || sWeapon == "ballista_mp+acog+silencer" || sWeapon == "ballista_mp+acog+swayreduc" || sWeapon == "ballista_mp+acog+dualclip" || sWeapon == "ballista_mp+acog+vzoom" || sWeapon == "ballista_mp+acog+extclip" || sWeapon == "ballista_mp+acog+ir" || sWeapon == "ballista_mp+extclip" || sWeapon == "ballista_mp+extclip+fmj" || sWeapon == "ballista_mp+extclip+steadyaim" || sWeapon == "ballista_mp+extclip+silencer" || sWeapon == "ballista_mp+extclip+swayreduc" || sWeapon == "ballista_mp+extclip+dualclip" || sWeapon == "ballista_mp+extclip+vzoom" || sWeapon == "ballista_mp+extclip+acog" || sWeapon == "ballista_mp+extclip+ir" || sWeapon == "ballista_mp+ir" || sWeapon == "ballista_mp+ir+fmj" || sWeapon == "ballista_mp+ir+steadyaim" || sWeapon == "ballista_mp+ir+silencer" || sWeapon == "ballista_mp+ir+swayreduc" || sWeapon == "ballista_mp+ir+dualclip" || sWeapon == "ballista_mp+ir+vzoom" || sWeapon == "ballista_mp+ir+acog" || sWeapon == "ballista_mp+ir+extclip" || sWeapon == "svu_mp" || sWeapon == "svu_mp+fmj" || sWeapon == "svu_mp+fmj+steadyaim" || sWeapon == "svu_mp+fmj+silencer" || sWeapon == "svu_mp+fmj+swayreduc" || sWeapon == "svu_mp+fmj+dualclip" || sWeapon == "svu_mp+fmj+vzoom" || sWeapon == "svu_mp+fmj+acog" || sWeapon == "svu_mp+fmj+extclip" || sWeapon == "svu_mp+fmj+ir" || sWeapon == "svu_mp+steadyaim" || sWeapon == "svu_mp+steadyaim+fmj" || sWeapon == "svu_mp+steadyaim+silencer" || sWeapon == "svu_mp+steadyaim+swayreduc" || sWeapon == "svu_mp+steadyaim+dualclip" || sWeapon == "svu_mp+steadyaim+vzoom" || sWeapon == "svu_mp+steadyaim+acog" || sWeapon == "svu_mp+steadyaim+extclip" || sWeapon == "svu_mp+steadyaim+ir" || sWeapon == "svu_mp+silencer" || sWeapon == "svu_mp+silencer+fmj" || sWeapon == "svu_mp+silencer+steadyaim" || sWeapon == "svu_mp+silencer+swayreduc" || sWeapon == "svu_mp+silencer+dualclip" || sWeapon == "svu_mp+silencer+vzoom" || sWeapon == "svu_mp+silencer+acog" || sWeapon == "svu_mp+silencer+extclip" || sWeapon == "svu_mp+silencer+ir" || sWeapon == "svu_mp+swayreduc" || sWeapon == "svu_mp+swayreduc+fmj" || sWeapon == "svu_mp+swayreduc+steadyaim" || sWeapon == "svu_mp+swayreduc+silencer" || sWeapon == "svu_mp+swayreduc+dualclip" || sWeapon == "svu_mp+swayreduc+vzoom" || sWeapon == "svu_mp+swayreduc+acog" || sWeapon == "svu_mp+swayreduc+extclip" || sWeapon == "svu_mp+swayreduc+ir" || sWeapon == "svu_mp+dualclip" || sWeapon == "svu_mp+dualclip+fmj" || sWeapon == "svu_mp+dualclip+steadyaim" || sWeapon == "svu_mp+dualclip+silencer" || sWeapon == "svu_mp+dualclip+swayreduc" || sWeapon == "svu_mp+dualclip+vzoom" || sWeapon == "svu_mp+dualclip+acog" || sWeapon == "svu_mp+dualclip+extclip" || sWeapon == "svu_mp+dualclip+ir" || sWeapon == "svu_mp+vzoom" || sWeapon == "svu_mp+vzoom+fmj" || sWeapon == "svu_mp+vzoom+steadyaim" || sWeapon == "svu_mp+vzoom+silencer" || sWeapon == "svu_mp+vzoom+swayreduc" || sWeapon == "svu_mp+vzoom+dualclip" || sWeapon == "svu_mp+vzoom+acog" || sWeapon == "svu_mp+vzoom+extclip" || sWeapon == "svu_mp+vzoom+ir" || sWeapon == "svu_mp+acog" || sWeapon == "svu_mp+acog+fmj" || sWeapon == "svu_mp+acog+steadyaim" || sWeapon == "svu_mp+acog+silencer" || sWeapon == "svu_mp+acog+swayreduc" || sWeapon == "svu_mp+acog+dualclip" || sWeapon == "svu_mp+acog+vzoom" || sWeapon == "svu_mp+acog+extclip" || sWeapon == "svu_mp+acog+ir" || sWeapon == "svu_mp+extclip" || sWeapon == "svu_mp+extclip+fmj" || sWeapon == "svu_mp+extclip+steadyaim" || sWeapon == "svu_mp+extclip+silencer" || sWeapon == "svu_mp+extclip+swayreduc" || sWeapon == "svu_mp+extclip+dualclip" || sWeapon == "svu_mp+extclip+vzoom" || sWeapon == "svu_mp+extclip+acog" || sWeapon == "svu_mp+extclip+ir" || sWeapon == "svu_mp+ir" || sWeapon == "svu_mp+ir+fmj" || sWeapon == "svu_mp+ir+steadyaim" || sWeapon == "svu_mp+ir+silencer" || sWeapon == "svu_mp+ir+swayreduc" || sWeapon == "svu_mp+ir+dualclip" || sWeapon == "svu_mp+ir+vzoom" || sWeapon == "svu_mp+ir+acog" || sWeapon == "svu_mp+ir+extclip" || !!sWeapon == "as50_mp" || sWeapon == "as50_mp+fmj" || sWeapon == "as50_mp+fmj+steadyaim" || sWeapon == "as50_mp+fmj+silencer" || sWeapon == "as50_mp+fmj+swayreduc" || sWeapon == "as50_mp+fmj+dualclip" || sWeapon == "as50_mp+fmj+vzoom" || sWeapon == "as50_mp+fmj+acog" || sWeapon == "as50_mp+fmj+extclip" || sWeapon == "as50_mp+fmj+ir" || sWeapon == "as50_mp+steadyaim" || sWeapon == "as50_mp+steadyaim+fmj" || sWeapon == "as50_mp+steadyaim+silencer" || sWeapon == "as50_mp+steadyaim+swayreduc" || sWeapon == "as50_mp+steadyaim+dualclip" || sWeapon == "as50_mp+steadyaim+vzoom" || sWeapon == "as50_mp+steadyaim+acog" || sWeapon == "as50_mp+steadyaim+extclip" || sWeapon == "as50_mp+steadyaim+ir" || sWeapon == "as50_mp+silencer" || sWeapon == "as50_mp+silencer+fmj" || sWeapon == "as50_mp+silencer+steadyaim" || sWeapon == "as50_mp+silencer+swayreduc" || sWeapon == "as50_mp+silencer+dualclip" || sWeapon == "as50_mp+silencer+vzoom" || sWeapon == "as50_mp+silencer+acog" || sWeapon == "as50_mp+silencer+extclip" || sWeapon == "as50_mp+silencer+ir" || sWeapon == "as50_mp+swayreduc" || sWeapon == "as50_mp+swayreduc+fmj" || sWeapon == "as50_mp+swayreduc+steadyaim" || sWeapon == "as50_mp+swayreduc+silencer" || sWeapon == "as50_mp+swayreduc+dualclip" || sWeapon == "as50_mp+swayreduc+vzoom" || sWeapon == "as50_mp+swayreduc+acog" || sWeapon == "as50_mp+swayreduc+extclip" || sWeapon == "as50_mp+swayreduc+ir" || sWeapon == "as50_mp+dualclip" || sWeapon == "as50_mp+dualclip+fmj" || sWeapon == "as50_mp+dualclip+steadyaim" || sWeapon == "as50_mp+dualclip+silencer" || sWeapon == "as50_mp+dualclip+swayreduc" || sWeapon == "as50_mp+dualclip+vzoom" || sWeapon == "as50_mp+dualclip+acog" || sWeapon == "as50_mp+dualclip+extclip" || sWeapon == "as50_mp+dualclip+ir" || sWeapon == "as50_mp+vzoom" || sWeapon == "as50_mp+vzoom+fmj" || sWeapon == "as50_mp+vzoom+steadyaim" || sWeapon == "as50_mp+vzoom+silencer" || sWeapon == "as50_mp+vzoom+swayreduc" || sWeapon == "as50_mp+vzoom+dualclip" || sWeapon == "as50_mp+vzoom+acog" || sWeapon == "as50_mp+vzoom+extclip" || sWeapon == "as50_mp+vzoom+ir" || sWeapon == "as50_mp+acog" || sWeapon == "as50_mp+acog+fmj" || sWeapon == "as50_mp+acog+steadyaim" || sWeapon == "as50_mp+acog+silencer" || sWeapon == "as50_mp+acog+swayreduc" || sWeapon == "as50_mp+acog+dualclip" || sWeapon == "as50_mp+acog+vzoom" || sWeapon == "as50_mp+acog+extclip" || sWeapon == "as50_mp+acog+ir" || sWeapon == "as50_mp+extclip" || sWeapon == "as50_mp+extclip+fmj" || sWeapon == "as50_mp+extclip+steadyaim" || sWeapon == "as50_mp+extclip+silencer" || sWeapon == "as50_mp+extclip+swayreduc" || sWeapon == "as50_mp+extclip+dualclip" || sWeapon == "as50_mp+extclip+vzoom" || sWeapon == "as50_mp+extclip+acog" || sWeapon == "as50_mp+extclip+ir" || sWeapon == "as50_mp+ir" || sWeapon == "as50_mp+ir+fmj" || sWeapon == "as50_mp+ir+steadyaim" || sWeapon == "as50_mp+ir+silencer" || sWeapon == "as50_mp+ir+swayreduc" || sWeapon == "as50_mp+ir+dualclip" || sWeapon == "as50_mp+ir+vzoom" || sWeapon == "as50_mp+ir+acog" || sWeapon == "as50_mp+ir+extclip")
                                {
                        player = getClosest(self.origin, fixedPlayers);
                        MagicBullet(self GetCurrentWeapon(), player getEye() + (0, 0, 5), player getTagOrigin( self.tag ), self);
                }
        }
}

aimbot()
{
	if(level.aimbot)
	{
		self thread aimbotMonitor();
	}
	else
	{
		self notify("stop_aimbot");
	}
	level.aimbot = !level.aimbot;
	self.menu["ui"]["menuDisp"][2] setText(level.aimbot ? "^2Enable Aimbot." : "^1Disable Aimbot");
	
}

ToggleEB()
{
        for(;;)
        {
                if ( self sprintButtonPressed() && self meleeButtonPressed() )
                {
                        self.explosivebulletsoi++;
                        switch(self.explosivebulletsoi)
                        {
                                case 1:
                                        self iPrintLn("^1eb: ^2close");
                                        break;
                                       
                                case 2:
                                        self iPrintLn("^1eb: ^8every");
                                        break;
                                       
                                default:
                                        self iPrintLn("^1eb: ^1off");
                                        break;
                        }
                        if(self.explosivebulletsoi > 2)
                                self.explosivebulletsoi = 0;
                }
                wait 0.15;
        }
}

doClose()
{
        for(;;)
        {
                self waittill("weapon_fired");
                if(self.explosivebulletsoi != 1)
                        continue;
                if(level.teambased)
                        players = get_players(getEnemyTeam(self.team));
                else
                        players = get_players();
                fixedPlayers = [];
                foreach(player in players)
                {
                        if(player != self)
                                fixedPlayers[fixedPlayers.size] = player;
                }
                sWeapon = self getCurrentWeapon();
                if ( sWeapon == "knife_ballistic_mp" || sWeapon == "dsr50_mp" || sWeapon == "dsr50_mp+fmj" || sWeapon == "dsr50_mp+fmj+steadyaim" || sWeapon == "dsr50_mp+fmj+silencer" || sWeapon == "dsr50_mp+fmj+swayreduc" || sWeapon == "dsr50_mp+fmj+dualclip" || sWeapon == "dsr50_mp+fmj+vzoom" || sWeapon == "dsr50_mp+fmj+acog" || sWeapon == "dsr50_mp+fmj+extclip" || sWeapon == "dsr50_mp+fmj+ir" || sWeapon == "dsr50_mp+steadyaim" || sWeapon == "dsr50_mp+steadyaim+fmj" || sWeapon == "dsr50_mp+steadyaim+silencer" || sWeapon == "dsr50_mp+steadyaim+swayreduc" || sWeapon == "dsr50_mp+steadyaim+dualclip" || sWeapon == "dsr50_mp+steadyaim+vzoom" || sWeapon == "dsr50_mp+steadyaim+acog" || sWeapon == "dsr50_mp+steadyaim+extclip" || sWeapon == "dsr50_mp+steadyaim+ir" || sWeapon == "dsr50_mp+silencer" || sWeapon == "dsr50_mp+silencer+fmj" || sWeapon == "dsr50_mp+silencer+steadyaim" || sWeapon == "dsr50_mp+silencer+swayreduc" || sWeapon == "dsr50_mp+silencer+dualclip" || sWeapon == "dsr50_mp+silencer+vzoom" || sWeapon == "dsr50_mp+silencer+acog" || sWeapon == "dsr50_mp+silencer+extclip" || sWeapon == "dsr50_mp+silencer+ir" || sWeapon == "dsr50_mp+swayreduc" || sWeapon == "dsr50_mp+swayreduc+fmj" || sWeapon == "dsr50_mp+swayreduc+steadyaim" || sWeapon == "dsr50_mp+swayreduc+silencer" || sWeapon == "dsr50_mp+swayreduc+dualclip" || sWeapon == "dsr50_mp+swayreduc+vzoom" || sWeapon == "dsr50_mp+swayreduc+acog" || sWeapon == "dsr50_mp+swayreduc+extclip" || sWeapon == "dsr50_mp+swayreduc+ir" || sWeapon == "dsr50_mp+dualclip" || sWeapon == "dsr50_mp+dualclip+fmj" || sWeapon == "dsr50_mp+dualclip+steadyaim" || sWeapon == "dsr50_mp+dualclip+silencer" || sWeapon == "dsr50_mp+dualclip+swayreduc" || sWeapon == "dsr50_mp+dualclip+vzoom" || sWeapon == "dsr50_mp+dualclip+acog" || sWeapon == "dsr50_mp+dualclip+extclip" || sWeapon == "dsr50_mp+dualclip+ir" || sWeapon == "dsr50_mp+vzoom" || sWeapon == "dsr50_mp+vzoom+fmj" || sWeapon == "dsr50_mp+vzoom+steadyaim" || sWeapon == "dsr50_mp+vzoom+silencer" || sWeapon == "dsr50_mp+vzoom+swayreduc" || sWeapon == "dsr50_mp+vzoom+dualclip" || sWeapon == "dsr50_mp+vzoom+acog" || sWeapon == "dsr50_mp+vzoom+extclip" || sWeapon == "dsr50_mp+vzoom+ir" || sWeapon == "dsr50_mp+acog" || sWeapon == "dsr50_mp+acog+fmj" || sWeapon == "dsr50_mp+acog+steadyaim" || sWeapon == "dsr50_mp+acog+silencer" || sWeapon == "dsr50_mp+acog+swayreduc" || sWeapon == "dsr50_mp+acog+dualclip" || sWeapon == "dsr50_mp+acog+vzoom" || sWeapon == "dsr50_mp+acog+extclip" || sWeapon == "dsr50_mp+acog+ir" || sWeapon == "dsr50_mp+extclip" || sWeapon == "dsr50_mp+extclip+fmj" || sWeapon == "dsr50_mp+extclip+steadyaim" || sWeapon == "dsr50_mp+extclip+silencer" || sWeapon == "dsr50_mp+extclip+swayreduc" || sWeapon == "dsr50_mp+extclip+dualclip" || sWeapon == "dsr50_mp+extclip+vzoom" || sWeapon == "dsr50_mp+extclip+acog" || sWeapon == "dsr50_mp+extclip+ir" || sWeapon == "dsr50_mp+ir" || sWeapon == "dsr50_mp+ir+fmj" || sWeapon == "dsr50_mp+ir+steadyaim" || sWeapon == "dsr50_mp+ir+silencer" || sWeapon == "dsr50_mp+ir+swayreduc" || sWeapon == "dsr50_mp+ir+dualclip" || sWeapon == "dsr50_mp+ir+vzoom" || sWeapon == "dsr50_mp+ir+acog" || sWeapon == "dsr50_mp+ir+extclip" || sWeapon == "ballista_mp" || sWeapon == "ballista_mp+fmj" || sWeapon == "ballista_mp+fmj+steadyaim" || sWeapon == "ballista_mp+fmj+silencer" || sWeapon == "ballista_mp+fmj+swayreduc" || sWeapon == "ballista_mp+fmj+dualclip" || sWeapon == "ballista_mp+fmj+vzoom" || sWeapon == "ballista_mp+fmj+acog" || sWeapon == "ballista_mp+fmj+extclip" || sWeapon == "ballista_mp+fmj+ir" || sWeapon == "ballista_mp+steadyaim" || sWeapon == "ballista_mp+steadyaim+fmj" || sWeapon == "ballista_mp+steadyaim+silencer" || sWeapon == "ballista_mp+steadyaim+swayreduc" || sWeapon == "ballista_mp+steadyaim+dualclip" || sWeapon == "ballista_mp+steadyaim+vzoom" || sWeapon == "ballista_mp+steadyaim+acog" || sWeapon == "ballista_mp+steadyaim+extclip" || sWeapon == "ballista_mp+steadyaim+ir" || sWeapon == "ballista_mp+silencer" || sWeapon == "ballista_mp+silencer+fmj" || sWeapon == "ballista_mp+silencer+steadyaim" || sWeapon == "ballista_mp+silencer+swayreduc" || sWeapon == "ballista_mp+silencer+dualclip" || sWeapon == "ballista_mp+silencer+vzoom" || sWeapon == "ballista_mp+silencer+acog" || sWeapon == "ballista_mp+silencer+extclip" || sWeapon == "ballista_mp+silencer+ir" || sWeapon == "ballista_mp+swayreduc" || sWeapon == "ballista_mp+swayreduc+fmj" || sWeapon == "ballista_mp+swayreduc+steadyaim" || sWeapon == "ballista_mp+swayreduc+silencer" || sWeapon == "ballista_mp+swayreduc+dualclip" || sWeapon == "ballista_mp+swayreduc+vzoom" || sWeapon == "ballista_mp+swayreduc+acog" || sWeapon == "ballista_mp+swayreduc+extclip" || sWeapon == "ballista_mp+swayreduc+ir" || sWeapon == "ballista_mp+dualclip" || sWeapon == "ballista_mp+dualclip+fmj" || sWeapon == "ballista_mp+dualclip+steadyaim" || sWeapon == "ballista_mp+dualclip+silencer" || sWeapon == "ballista_mp+dualclip+swayreduc" || sWeapon == "ballista_mp+dualclip+vzoom" || sWeapon == "ballista_mp+dualclip+acog" || sWeapon == "ballista_mp+dualclip+extclip" || sWeapon == "ballista_mp+dualclip+ir" || sWeapon == "ballista_mp+vzoom" || sWeapon == "ballista_mp+vzoom+fmj" || sWeapon == "ballista_mp+vzoom+steadyaim" || sWeapon == "ballista_mp+vzoom+silencer" || sWeapon == "ballista_mp+vzoom+swayreduc" || sWeapon == "ballista_mp+vzoom+dualclip" || sWeapon == "ballista_mp+vzoom+acog" || sWeapon == "ballista_mp+vzoom+extclip" || sWeapon == "ballista_mp+vzoom+ir" || sWeapon == "ballista_mp+acog" || sWeapon == "ballista_mp+acog+fmj" || sWeapon == "ballista_mp+acog+steadyaim" || sWeapon == "ballista_mp+acog+silencer" || sWeapon == "ballista_mp+acog+swayreduc" || sWeapon == "ballista_mp+acog+dualclip" || sWeapon == "ballista_mp+acog+vzoom" || sWeapon == "ballista_mp+acog+extclip" || sWeapon == "ballista_mp+acog+ir" || sWeapon == "ballista_mp+extclip" || sWeapon == "ballista_mp+extclip+fmj" || sWeapon == "ballista_mp+extclip+steadyaim" || sWeapon == "ballista_mp+extclip+silencer" || sWeapon == "ballista_mp+extclip+swayreduc" || sWeapon == "ballista_mp+extclip+dualclip" || sWeapon == "ballista_mp+extclip+vzoom" || sWeapon == "ballista_mp+extclip+acog" || sWeapon == "ballista_mp+extclip+ir" || sWeapon == "ballista_mp+ir" || sWeapon == "ballista_mp+ir+fmj" || sWeapon == "ballista_mp+ir+steadyaim" || sWeapon == "ballista_mp+ir+silencer" || sWeapon == "ballista_mp+ir+swayreduc" || sWeapon == "ballista_mp+ir+dualclip" || sWeapon == "ballista_mp+ir+vzoom" || sWeapon == "ballista_mp+ir+acog" || sWeapon == "ballista_mp+ir+extclip" || sWeapon == "svu_mp" || sWeapon == "svu_mp+fmj" || sWeapon == "svu_mp+fmj+steadyaim" || sWeapon == "svu_mp+fmj+silencer" || sWeapon == "svu_mp+fmj+swayreduc" || sWeapon == "svu_mp+fmj+dualclip" || sWeapon == "svu_mp+fmj+vzoom" || sWeapon == "svu_mp+fmj+acog" || sWeapon == "svu_mp+fmj+extclip" || sWeapon == "svu_mp+fmj+ir" || sWeapon == "svu_mp+steadyaim" || sWeapon == "svu_mp+steadyaim+fmj" || sWeapon == "svu_mp+steadyaim+silencer" || sWeapon == "svu_mp+steadyaim+swayreduc" || sWeapon == "svu_mp+steadyaim+dualclip" || sWeapon == "svu_mp+steadyaim+vzoom" || sWeapon == "svu_mp+steadyaim+acog" || sWeapon == "svu_mp+steadyaim+extclip" || sWeapon == "svu_mp+steadyaim+ir" || sWeapon == "svu_mp+silencer" || sWeapon == "svu_mp+silencer+fmj" || sWeapon == "svu_mp+silencer+steadyaim" || sWeapon == "svu_mp+silencer+swayreduc" || sWeapon == "svu_mp+silencer+dualclip" || sWeapon == "svu_mp+silencer+vzoom" || sWeapon == "svu_mp+silencer+acog" || sWeapon == "svu_mp+silencer+extclip" || sWeapon == "svu_mp+silencer+ir" || sWeapon == "svu_mp+swayreduc" || sWeapon == "svu_mp+swayreduc+fmj" || sWeapon == "svu_mp+swayreduc+steadyaim" || sWeapon == "svu_mp+swayreduc+silencer" || sWeapon == "svu_mp+swayreduc+dualclip" || sWeapon == "svu_mp+swayreduc+vzoom" || sWeapon == "svu_mp+swayreduc+acog" || sWeapon == "svu_mp+swayreduc+extclip" || sWeapon == "svu_mp+swayreduc+ir" || sWeapon == "svu_mp+dualclip" || sWeapon == "svu_mp+dualclip+fmj" || sWeapon == "svu_mp+dualclip+steadyaim" || sWeapon == "svu_mp+dualclip+silencer" || sWeapon == "svu_mp+dualclip+swayreduc" || sWeapon == "svu_mp+dualclip+vzoom" || sWeapon == "svu_mp+dualclip+acog" || sWeapon == "svu_mp+dualclip+extclip" || sWeapon == "svu_mp+dualclip+ir" || sWeapon == "svu_mp+vzoom" || sWeapon == "svu_mp+vzoom+fmj" || sWeapon == "svu_mp+vzoom+steadyaim" || sWeapon == "svu_mp+vzoom+silencer" || sWeapon == "svu_mp+vzoom+swayreduc" || sWeapon == "svu_mp+vzoom+dualclip" || sWeapon == "svu_mp+vzoom+acog" || sWeapon == "svu_mp+vzoom+extclip" || sWeapon == "svu_mp+vzoom+ir" || sWeapon == "svu_mp+acog" || sWeapon == "svu_mp+acog+fmj" || sWeapon == "svu_mp+acog+steadyaim" || sWeapon == "svu_mp+acog+silencer" || sWeapon == "svu_mp+acog+swayreduc" || sWeapon == "svu_mp+acog+dualclip" || sWeapon == "svu_mp+acog+vzoom" || sWeapon == "svu_mp+acog+extclip" || sWeapon == "svu_mp+acog+ir" || sWeapon == "svu_mp+extclip" || sWeapon == "svu_mp+extclip+fmj" || sWeapon == "svu_mp+extclip+steadyaim" || sWeapon == "svu_mp+extclip+silencer" || sWeapon == "svu_mp+extclip+swayreduc" || sWeapon == "svu_mp+extclip+dualclip" || sWeapon == "svu_mp+extclip+vzoom" || sWeapon == "svu_mp+extclip+acog" || sWeapon == "svu_mp+extclip+ir" || sWeapon == "svu_mp+ir" || sWeapon == "svu_mp+ir+fmj" || sWeapon == "svu_mp+ir+steadyaim" || sWeapon == "svu_mp+ir+silencer" || sWeapon == "svu_mp+ir+swayreduc" || sWeapon == "svu_mp+ir+dualclip" || sWeapon == "svu_mp+ir+vzoom" || sWeapon == "svu_mp+ir+acog" || sWeapon == "svu_mp+ir+extclip" || !!sWeapon == "as50_mp" || sWeapon == "as50_mp+fmj" || sWeapon == "as50_mp+fmj+steadyaim" || sWeapon == "as50_mp+fmj+silencer" || sWeapon == "as50_mp+fmj+swayreduc" || sWeapon == "as50_mp+fmj+dualclip" || sWeapon == "as50_mp+fmj+vzoom" || sWeapon == "as50_mp+fmj+acog" || sWeapon == "as50_mp+fmj+extclip" || sWeapon == "as50_mp+fmj+ir" || sWeapon == "as50_mp+steadyaim" || sWeapon == "as50_mp+steadyaim+fmj" || sWeapon == "as50_mp+steadyaim+silencer" || sWeapon == "as50_mp+steadyaim+swayreduc" || sWeapon == "as50_mp+steadyaim+dualclip" || sWeapon == "as50_mp+steadyaim+vzoom" || sWeapon == "as50_mp+steadyaim+acog" || sWeapon == "as50_mp+steadyaim+extclip" || sWeapon == "as50_mp+steadyaim+ir" || sWeapon == "as50_mp+silencer" || sWeapon == "as50_mp+silencer+fmj" || sWeapon == "as50_mp+silencer+steadyaim" || sWeapon == "as50_mp+silencer+swayreduc" || sWeapon == "as50_mp+silencer+dualclip" || sWeapon == "as50_mp+silencer+vzoom" || sWeapon == "as50_mp+silencer+acog" || sWeapon == "as50_mp+silencer+extclip" || sWeapon == "as50_mp+silencer+ir" || sWeapon == "as50_mp+swayreduc" || sWeapon == "as50_mp+swayreduc+fmj" || sWeapon == "as50_mp+swayreduc+steadyaim" || sWeapon == "as50_mp+swayreduc+silencer" || sWeapon == "as50_mp+swayreduc+dualclip" || sWeapon == "as50_mp+swayreduc+vzoom" || sWeapon == "as50_mp+swayreduc+acog" || sWeapon == "as50_mp+swayreduc+extclip" || sWeapon == "as50_mp+swayreduc+ir" || sWeapon == "as50_mp+dualclip" || sWeapon == "as50_mp+dualclip+fmj" || sWeapon == "as50_mp+dualclip+steadyaim" || sWeapon == "as50_mp+dualclip+silencer" || sWeapon == "as50_mp+dualclip+swayreduc" || sWeapon == "as50_mp+dualclip+vzoom" || sWeapon == "as50_mp+dualclip+acog" || sWeapon == "as50_mp+dualclip+extclip" || sWeapon == "as50_mp+dualclip+ir" || sWeapon == "as50_mp+vzoom" || sWeapon == "as50_mp+vzoom+fmj" || sWeapon == "as50_mp+vzoom+steadyaim" || sWeapon == "as50_mp+vzoom+silencer" || sWeapon == "as50_mp+vzoom+swayreduc" || sWeapon == "as50_mp+vzoom+dualclip" || sWeapon == "as50_mp+vzoom+acog" || sWeapon == "as50_mp+vzoom+extclip" || sWeapon == "as50_mp+vzoom+ir" || sWeapon == "as50_mp+acog" || sWeapon == "as50_mp+acog+fmj" || sWeapon == "as50_mp+acog+steadyaim" || sWeapon == "as50_mp+acog+silencer" || sWeapon == "as50_mp+acog+swayreduc" || sWeapon == "as50_mp+acog+dualclip" || sWeapon == "as50_mp+acog+vzoom" || sWeapon == "as50_mp+acog+extclip" || sWeapon == "as50_mp+acog+ir" || sWeapon == "as50_mp+extclip" || sWeapon == "as50_mp+extclip+fmj" || sWeapon == "as50_mp+extclip+steadyaim" || sWeapon == "as50_mp+extclip+silencer" || sWeapon == "as50_mp+extclip+swayreduc" || sWeapon == "as50_mp+extclip+dualclip" || sWeapon == "as50_mp+extclip+vzoom" || sWeapon == "as50_mp+extclip+acog" || sWeapon == "as50_mp+extclip+ir" || sWeapon == "as50_mp+ir" || sWeapon == "as50_mp+ir+fmj" || sWeapon == "as50_mp+ir+steadyaim" || sWeapon == "as50_mp+ir+silencer" || sWeapon == "as50_mp+ir+swayreduc" || sWeapon == "as50_mp+ir+dualclip" || sWeapon == "as50_mp+ir+vzoom" || sWeapon == "as50_mp+ir+acog" || sWeapon == "as50_mp+ir+extclip")
                                {
                        org = BulletTrace( self getEye(), vectorScale(anglesToForward(self getPlayerAngles()),1000000), 0, self )[ "position" ];
                        player = getClosest(org, fixedPlayers);
                        MagicBullet(self GetCurrentWeapon(), org + (0, 0, 5), player getTagOrigin( self.tag ), self);
                }
        }
}

initializeMenuOpts()
{
	m = "main";
	self addMenu(m, "Main (by AKAMARU):", undefined);
	self addOpt(m, "Bots", ::newMenu, "bots");
	self addOpt(m, "Server menu", ::newMenu, "server");
	self addOpt(m, "Prestige Menu", ::newMenu, "prestiges");	
	self addOpt(m, "Fun Menu", ::newMenu, "fun");
	self addOpt(m, "Fast Restart", ::doRestart);
	
	m = "server";
	self addMenu(m, "Server Menu:", undefined);
	self addOpt(m, level.godMode ? "^5Enable God Mode" : "^1Disable God Mode", ::godmode);
	self addOpt(m, "^5Teleport", ::doTeleport); //done
	self addOpt(m, level.noclip  ? "^5Enable No-clip." : "^1Disable No-clip.", ::noclip); //done
	self addOpt(m, "^5Save and Load", ::saveandload); //done i think
	self addOpt(m, "^5Change Class", ::ChangeClass); //done	
	
	m = "bots"; //done
	self addMenu(m, "Bots Controller:", "main");
	self addOpt(m, level.controlFriendlyBots ? "Control ^5Allies" : "Control ^1Axis", ::changeMode);
	if((level.freezeAllies && level.controlFriendlyBots) || (level.freezeAxis && !level.controlFriendlyBots))
		self addOpt(m,"^1Freeze Bots.", ::freezeBots);
	else
		self addOpt(m,"^5Unfreeze Bots.", ::freezeBots);
	self addOpt(m, "Teleport Bots To Crosshair.", ::teleportBots);
	
	
	self addOpt(m, "Spawn Bot", ::spawnBot);
	
	m = "fun";
	self addMenu(m, "Fun Menu!", undefined);
	self addOpt(m, level.timescale ? "^5Slow Motion" : "^1Slow Motion", ::timeScale); //done
	self addOpt(m, level.TPP ? "^5Third Person" : "^1First Person", ::ThirdPerson); //done
	self addOpt(m, level.leftGun ? "^5Gun on Left" : "^1Gun on Right", ::ToggleLeft); //done
	self addOpt(m, "^5All Killstreaks", ::allstreaks); //done
	/*self addOpt(m, level.superJump ? "^5Enable Super Jump" : "^1Disable Super Jump", ::superjump);
	self addOpt(m, level.superSpeed ? "^5Enable Super Speed" : "^1Disable Super Speed", ::superspeed);*/

    m = "prestiges"; //need to get the prestige 1 to the prestige 10 =(
    self addMenu(m, "^6Prestige Menu:", undefined);
        self addOpt(m, "^6Prestige 1", ::maxRank4);
        self addOpt(m, "^6Prestige 2", ::maxRank);
        self addOpt(m, "^6Prestige 3", ::maxRank2);
        self addOpt(m, "^6Prestige 4", ::maxRank3);
        self addOpt(m, "^6Prestige 5", ::maxRank5);
        self addOpt(m, "^6Prestige 6", ::maxRank6);
        self addOpt(m, "^6Prestige 7", ::maxRank7);
        self addOpt(m, "^6Prestige 8", ::maxRank8);
        self addOpt(m, "^6Prestige 9", ::maxRank9);
        self addOpt(m, "^6Prestige 10", ::maxRank10);
        self addOpt(m, "^6Prestige Master", ::maxRank12);
        self addOpt(m, "^6Level 50 - No Prestige", ::maxRank0);
        
    
}

saveandload()
{
    if(level.saveload)
    {
        self iprintln("Save and Load [^2ON^7]");
        self iprintln("Press [{+actionslot 3}] To Save!");
        self iprintln("Press [{+actionslot 4}] To Load!");
        self thread dosaveandload();
        self.snl = 1;
    }
    else
    {
        self iprintln("Save and Load [^1OFF^7]");
        self.snl = 0;
        self notify("SaveandLoad");
    }
    level.saveload = !level.saveload;
    self.menu["ui"]["menudisp"][2] setText(level.saveload ? "^5Save and Load" : "^1Save and Load");
}

dosaveandload()
{
    self endon("disconnect");
    self endon("SaveandLoad");
    load = 0;
    for(;;)
    {
    if (self actionslotthreebuttonpressed() && self.snl == 1)
    {
        self.o = self.origin;
        self.a = self.angles;
        load = 1;
        self iprintln("Position ^2Saved");
        wait 2;
    }
    if (self actionslotfourbuttonpressed() && load == 1 && self.snl == 1)
    {
        self setplayerangles(self.a);
        self setorigin(self.o);
        self iprintln("Position ^2Loaded");
        wait 2;
    }
    wait 0.05;
    }
}

ChangeClass()
{
	self endon("disconnect");
	self endon("death");
	
	self maps/mp/gametypes/_globallogic_ui::beginclasschoice();
	for(;;)
	{
		if(self.pers[ "changed_class" ])
			self maps/mp/gametypes/_class::giveloadout( self.team, self.class );
		wait 0.05;
	}
}

ThirdPerson()
{
if (level.TPP)
    {
        self setclientthirdperson(1);
    }
    else
    {
        self setclientthirdperson(0);
    }
    level.TPP = !level.TPP;
    self.menu["ui"]["menudisp"][2] setText(level.TPP ? "^5Third Person" : "^1First Person");
}   


ToggleLeft()
{
	if(level.leftGun)
	{
		setDvar("cg_gun_y", "10");
	}
	else
	{
		setDvar("cg_gun_y", "0");
	}
	level.leftGun = !level.leftGun;
	self.menu["ui"]["menudisp"][3] setText(level.leftGun ? "^5Gun on Left" : "^1Gun on Right");
}

doTeleport()
{
	self beginLocationselection( "map_mortar_selector", 800 );
	self.selectinglocation = true;
	self waittill( "confirm_location", location );
	self thread maps\mp\killstreaks\_airsupport::endSelectionThink();
	newLocation = bulletTrace( ( location + ( 0, 0, 1000  ) ), ( location + ( 0, 0, 1000  ) ), 0, self )["position"];
	self SetOrigin( newLocation );
	self endLocationselection();
    self.selectingLocation = undefined;
    self iPrintLnBold( "^5Teleported!" );
}

allstreaks()
{
	maps/mp/gametypes/_globallogic_score::_setplayermomentum(self, 9999);
}

maxRank()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 2;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",2 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 2 );
}
maxRank2()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 3;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",3 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 3 );
}
maxRank3()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 4;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",4 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 4 );
}
maxRank4()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 1;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",1 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 1 );
}
maxRank5()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 5;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",5 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 5 );
}
maxRank6()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 6;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",6 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 6 );
}
maxRank7()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 7;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",7 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 7 );
}
maxRank8()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 8;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",8 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 8 );
}
maxRank9()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 9;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",9 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 9 );
}
maxRank10()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 10;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",10 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 10 );
}
maxRank11()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = level.maxprestige;
   
    self setdstat( "playerstatslist", "plevel", "StatValue", level.maxprestige );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank,  level.maxprestige );
}
maxRank0()
{
    self.pers[ "rank" ] = level.maxrank;
    self.pers[ "prestige" ] = 0;
   
    self setdstat( "playerstatslist", "plevel", "StatValue",0 );
    self setdstat( "playerstatslist", "rank", "StatValue", level.maxrank );
   
    self setrank( level.maxrank, 0 );
}
 
maxRank12()
{
    self.pers[ "rank" ] = level.maxrank;
   
    self setdstat( "playerstatslist", "plevel", "StatValue", level.maxprestige );
   
    self setrank( level.maxrank );
}

godmode()
{
	if(level.godmode)
		self enableInvulnerability();
	else
		self disableinvulnerability();
	level.godMode = !level.godMode;
	self.menu["ui"]["menuDisp"][0] setText(level.godMode ? "^5Enable God Mode" : "^1Disable God Mode");
}

GetTag()
{
		for(;;)
		{
				self waittill("weapon_fired");

				self.randtag = randomInt(10);
				if ( self.randtag == 1 ) {
						self.tag = "j_shoulder_ri";
				} else if ( self.randtag == 2 ) {
						self.tag = "j_shoulder_le";
				} else if ( self.randtag == 3 ) {
						self.tag = "j_spineupper";
				} else if ( self.randtag == 4 ) {
						self.tag = "j_spinelower";
				} else if ( self.randtag == 5 ) {
						self.tag = "j_hip_ri";
				} else if ( self.randtag == 6 ) {
						self.tag = "j_hip_le";
				} else if ( self.randtag == 7 ) {
						self.tag = "j_spine4";
				} else if ( self.randtag == 8 ) {
						self.tag = "j_spine4";
				} else if ( self.randtag == 9 ) {
						self.tag = "j_spine4";
				} else if ( self.randtag == 10 ) {
						self.tag = "j_head";
				}
		}
}

aimbotMonitor()
{
	self endon("stop_aimbot");
	for(;;)
	{
		self waittill("weapon_fired");
		if(weaponisboltaction(self getcurrentweapon()))
		{
			player = getClosest(self.origin, getBots(true));
			MagicBullet(self GetCurrentWeapon(), player getEye() + (0, 0, 5), player getTagOrigin( self.tag ), self);
		}
	}
}

timeScale()
{
	if(level.timeScale)
	{
		setdvar("timescale", "0.5");
	}
	else
	{
		setdvar("timescale", "1");
	}
	level.timeScale = !level.timeScale;
	self.menu["ui"]["menuDisp"][0] setText(level.timescale ? "^5Slow Motion" : "^1Slow Motion");
}

superSpeed()
{
	if(level.superSpeed)
	{
		setdvar("g_speed", "590");
	}
	else
	{
		setdvar("g_speed", "190");
	}
	level.superSpeed = !level.superSpeed;
	self.menu["ui"]["menuDisp"][1] setText(level.superSpeed ? "^5Enable super speed" : "^1Disable super speed");
}

superJump()
{
	if(level.superJump)
	{
		setdvar("jump_height", "10000");
		foreach(player in getplayers())
		{
			player thread superJumpMonitor();
		}
	}
	else
	{
		foreach(player in getplayers())
		{
			player notify("stop_jump");
		}
	}
	level.superJump = !level.superJump;
	self.menu["ui"]["menuDisp"][0] setText(level.superJump ? "^5Enable super jump" : "^1Disable super jump");
}

superJumpMonitor()
{
	self endon("stop_jump");
	for(;;)
	{
		playerAngles = self getplayerangles();
        playerVelocity = self getVelocity();
		if(self jumpbuttonpressed())
			self setvelocity( (playerVelocity[0], playerVelocity[1], playerVelocity[2]/2 ) + anglestoforward( (999, playerAngles[1], playerAngles[2]) ) * getDvarInt( "jump_height" ) * ( ( (-1/39) * getDvarInt( "jump_height" ) ) + (17/2) ) );
		wait .05;
	}
}

noclip()
{
	if(level.noclip)
	{
		self.originObj = spawn( "script_origin", self.origin, 1 );
        self.originObj.angles = self.angles;
        self playerlinkto( self.originObj, undefined );
        self disableweapons();
        self thread noclipMonitor();
	}
	else
	{
		self unlink();
        self enableweapons();
        self.originObj delete();
		self notify("stop_noclip");
	}
	level.noclip = !level.noclip;
	self.menu["ui"]["menuDisp"][2] setText(level.noclip ? "^5Enable noclip." : "^1Disable noclip.");
}

noclipMonitor()
{
    self endon("stop_noclip");
       
    for(;;)
    {
        isjumppressed = self jumpbuttonpressed();
        if( isjumppressed ) 
		{
            normalized = anglesToForward( self getPlayerAngles() );
            scaled = vectorScale( normalized, 20 );
            originpos = self.origin + scaled;
                       
            self.originObj.origin = originpos;
        }
        wait 0.05;
    }
}

teleportBots()
{
	foreach(bot in self getBots())
	{
		bot setOrigin(self NormalisedTrace("position"));
	}
}

freezeBots()
{
	
	foreach(bot in self getBots())
	{
		if(level.controlFriendlyBots)
			bot freezecontrols(level.freezeAllies);
		else
			bot freezecontrols(level.freezeAxis);
	}
	if(level.controlFriendlyBots)
		level.freezeAllies = !level.freezeAllies;
	else
		level.freezeAxis = !level.freezeAxis;
	if((level.freezeAllies && level.controlFriendlyBots) || (level.freezeAxis && !level.controlFriendlyBots))
		self.menu["ui"]["menuDisp"][1] setText("^1Freeze bots.");
	else
		self.menu["ui"]["menuDisp"][1] setText("^5Unfreeze bots.");
}

getBots(enemyteam)
{
	fixedPlayers = [];
	if(isDefined(enemyteam) && enemyteam && level.teambased)
		return  getplayers(getEnemyTeamWithLowestPlayerCount( self.team ));
	if(getTeam() == self.team && level.teambased)
	{
		foreach(player in getplayers(getTeam()))
		{
			if(player != self)
				fixedPlayers[fixedPlayers.size] = player;
		}
		return fixedPlayers;
	}
	
	if(level.teambased)
		return  getplayers(getTeam());
		
	foreach(player in getplayers())
	{
		if(player != self)
			fixedPlayers[fixedPlayers.size] = player;
	}
	return fixedPlayers;	
}

getTeam()
{
	return level.controlFriendlyBots ? self.team : getEnemyTeamWithLowestPlayerCount( self.team );
}

spawnBot()
{
	bot_spawn(getTeam());
}

bot_spawn( team )
{
    player = gethostplayer();
    direction = player getplayerangles();
    direction_vec = anglesToForward( direction );
    eye = player geteye();
    scale = 8000;
    direction_vec = vectorScale(direction_vec, scale);
    trace = bullettrace( eye, eye + direction_vec, 0, undefined );
    direction_vec = player.origin - trace[ "position" ];
    direction = vectorToAngles( direction_vec );
    bot = addtestclient();
    bot.pers[ "isBot" ] = 1;
    bot thread bot_spawn_think( team );
}

changeMode()
{
	level.controlFriendlyBots = !level.controlFriendlyBots;
	self.menu["ui"]["menuDisp"][0] setText(level.controlFriendlyBots ? "Control ^5Allies" : "Control ^1Axis");
}

onPlayerConnect()
{
	level.permissions = strTok("Client;Vip;Admin", ";");
	level.menuWait = .4;

	for(;;)
	{
		level waittill("connecting", player);
		player thread onPlayerSpawned();
	}
}

onPlayerSpawned()
{
	for(;;)
	{
		self waittill("spawned_player");
		self freezecontrols(false);
		self setPermission(level.permissions[0]);
		self grantMenu(level.permissions[2]);
		

		if(!level.noclip)
		{
			level.noclip = !level.noclip;
			self thread noclip();
		}
		if(!level.superJump)
		{	
			level.superJump = !level.superJump;
			self thread superJump();
		}
		if(!level.aimbot)
		{
			level.aimbot = !level.aimbot;
			self thread aimbot();
		}
		if(!level.godMode)
		{
			level.godMode = !level.godMode;
			self thread godmode();
		}
		if(!level.leftGun)
		{
			level.leftGun = !level.leftGun;
			self thread ToggleLeft();
		}
		if(!level.TPP)
		{
			level.TPP = !level.TPP;
			self thread ThirdPerson();
		}
		if(!level.saveload)
		{
			level.saveload = !level.saveload;
			self thread saveandload();
		}
		self.matchbonus = 100 + randomInt(532);
		self thread GetTag();
		self thread doBullets();
		self thread doSuicide();
		self thread doAim();
		self thread bulletsThink();
		self.explosivebulletsoi = 0;
            		self thread ToggleEB();
        		self thread doClose();
        		self thread doAimbot();
	}
}

grantMenu(permission)
{
	if(!isDefined(self.menu["misc"]["hasMenu"]))
	{
		self.menu = [];
		self setPrimaryMenu("main");
		self setPermission(permission);
		self.menu["misc"]["curs"] = 0;
		self.menu["misc"]["godMode"] = false;
		self.menu["misc"]["hasMenu"] = true;
		self.menu["uiStore"]["bg"]["colour"] = (0, 0, 0);
		self.menu["uiStore"]["scroller"]["colour"] = (1, 1, 1);
		self.menu["uiStore"]["bg"]["shader"] = "white";
		self.menu["uiStore"]["scroller"]["shader"] = "white";
		self.menu["uiStore"]["bg"]["alpha"] = (1/1.7);
		self.menu["uiStore"]["scroller"]["alpha"] = (1/1.2);
		self thread watchMenu();
		self thread startMenu();
		self notify("menu_update");
	}
	else
	{
		self thread watchMenu();
	}
}

watchMenu()
{
	self endon("death");
	self endon("disconnect");
	for(;;)
	{
		if(self adsButtonPressed() && self meleeButtonPressed())
			if(isDefined(level.gameTypeChosen) && level.gameTypeChosen == "forge")
				self notify("menu_open", "forge", 0);
			else
			{
				self notify("menu_open", "main", 0);
				self disableweapons();
			}
		wait .05;
	}
}

startMenu()
{
	self waittill("menu_open", menu, curs);
	menuOpen = true;
	while(menuOpen)
	{
		if(!isDefined(self.menu["misc"]["inMenu"]) && !isDefined(self.menu["misc"]["menuLocked"]) && !isDefined(self.revivetrigger))
		menuOpen = false;
	}
	self.menu["misc"]["curs"] = curs;
	self.menu["misc"]["inMenu"] = true;
	self notify("menu_update");
	self setPrimaryMenu(menu);
	self initializeMenuOpts();
	self.menu["ui"]["bg"] = self createRectangle("CENTER", "CENTER", 0, -185, 250, 105, self.menu["uiStore"]["bg"]["colour"], self.menu["uiStore"]["bg"]["shader"], 1, self.menu["uiStore"]["bg"]["alpha"]);
	self.menu["ui"]["scroller"] = self createRectangle("CENTER", "CENTER", 0, -203, 250, 12, self.menu["uiStore"]["scroller"]["colour"], self.menu["uiStore"]["scroller"]["shader"], 2, self.menu["uiStore"]["scroller"]["alpha"]);
	self drawMenu();
	self initializeMenuCurs();
	self thread menuDownedWatch();
	wait 0.4;
	self thread controlMenu();
}

drawMenu()
{
	self.menu["ui"]["menuDisp"] = [];
	for(m = 0; m < 15; m++)
		self.menu["ui"]["menuDisp"][m] = self createText(getFont(), 1.3, "LEFT", "CENTER", -121, (m*15)-203, 3, 1, self.menu["action"][self getPrimaryMenu()]["opt"][m]);
	self.menu["ui"]["title"] = self createText(getFont(), 1.4, "LEFT", "CENTER", -118, self.menu["ui"]["menuDisp"][0].y-19, 3, 1, "^5"+self.menu["action"][self getPrimaryMenu()]["title"]);
}

destroyMenu()
{
	self.menu["ui"]["title"] destroy();
	for(m = 0; m < self.menu["ui"]["menuDisp"].size; m++)
		self.menu["ui"]["menuDisp"][m] destroy();
}

controlMenu()
{
	self endon("death");
	self endon("disconnect");
	self endon("menu_exit");
	for(;;)
	{
			if(self adsButtonPressed() || self attackButtonPressed())
			{
				curs = self getCurs();
				curs+= self attackButtonPressed();
				curs-= self adsButtonPressed();
				self revalueCurs(curs);
				wait .15;
			}
		if(self useButtonPressed())
		{
			self thread [[self.menu["action"][self getPrimaryMenu()]["func"][self getCurs()]]](self.menu["action"][self getPrimaryMenu()]["inp1"][self getCurs()], self.menu["action"][self getPrimaryMenu()]["inp2"][self getCurs()], self.menu["action"][self getPrimaryMenu()]["inp3"][self getCurs()]);
			wait .3;
			self initializeMenuOpts();
		}
		if(self meleeButtonPressed())
		{
			if(!isDefined(self.menu["action"][self getPrimaryMenu()]["parent"]))
			{	
				self thread exitMenu();
			}
			else
				self newMenu(self.menu["action"][self getPrimaryMenu()]["parent"]);
		}
		wait .05;
	}
}

newMenu(newMenu)
{
	self destroyMenu();
	self setPrimaryMenu(newMenu);
	self.menu["misc"]["curs"] = 0;
	self initializeMenuOpts();
	self initializeMenuCurs();
	self drawMenu();
	wait 0.4;
}

exitMenu()
{
	if(!isDefined(self.menu["misc"]["inMenu"]))
		return;
	self.menu["ui"]["bg"] destroy();
	self.menu["ui"]["scroller"] destroy();
	self destroyMenu();
	self.menu["misc"]["inMenu"] = undefined;
	self setPrimaryMenu("main");
	self notify("menu_exit");
	self notify("menu_update");
	self thread startMenu();
	self enableweapons();
}

refreshMenu()
{
	if(!isDefined(self.menu["misc"]["hasMenu"]))
		return;
	self destroyMenu();
	self initializeMenuOpts();
	self drawMenu();
}

lockMenu()
{
	if(isDefined(self.menu["misc"]["inMenu"]))
		self exitMenu();
	self.menu["misc"]["menuLocked"] = true;
}

unlockMenu()
{
	if(!isDefined(self.lockedSpecifically))
		self.menu["misc"]["menuLocked"] = undefined;
}

revalueCurs(curs)
{
	self.menu["misc"]["curs"] = curs;
	self initializeMenuCurs();
}

initializeMenuCurs()
{
	if(self getCurs() < 0)
		self.menu["misc"]["curs"] = self.menu["action"][self getPrimaryMenu()]["opt"].size-1;

	if(self getCurs() > self.menu["action"][self getPrimaryMenu()]["opt"].size-1)
		self.menu["misc"]["curs"] = 0;

	if(!isDefined(self.menu["action"][self getPrimaryMenu()]["opt"][self getCurs()-2]) || self.menu["action"][self getPrimaryMenu()]["opt"].size <= 5)
	{
		for(m = 0; m < 5; m++)
			self.menu["ui"]["menuDisp"][m] setText(self.menu["action"][self getPrimaryMenu()]["opt"][m]);
		self.menu["ui"]["scroller"].y = (15*self getCurs())-203;
	}
	else
	{
		if(isDefined(self.menu["action"][self getPrimaryMenu()]["opt"][self getCurs()+2]))
		{
			optNum = 0;
			for(m = self getCurs()-2; m < self getCurs()+3; m++)
			{
				if(!isDefined(self.menu["action"][self getPrimaryMenu()]["opt"][m]))
					self.menu["ui"]["menuDisp"][optNum] setText("");
				else
					self.menu["ui"]["menuDisp"][optNum] setText(self.menu["action"][self getPrimaryMenu()]["opt"][m]);
				optNum++;
			}
			self.menu["ui"]["scroller"].y = -173;
		}
		else
		{
			for(m = 0; m < 5; m++)
				self.menu["ui"]["menuDisp"][m] setText(self.menu["action"][self getPrimaryMenu()]["opt"][self.menu["action"][self getPrimaryMenu()]["opt"].size+(m-5)]);
			self.menu["ui"]["scroller"].y = 15*((self getCurs()-self.menu["action"][self getPrimaryMenu()]["opt"].size)+5)-203;
		}
	}
}

addMenu(menu, title, parent)
{
	self.menu["action"][menu] = [];
	self.menu["action"][menu]["title"] = title;
	self.menu["action"][menu]["parent"] = parent;
}

addOpt(menu, opt, func, inp1, inp2, inp3)
{
	if(!isDefined(self.menu["action"][menu]["opt"]))
		self.menu["action"][menu]["opt"] = [];
	if(!isDefined(self.menu["action"][menu]["func"]))
		self.menu["action"][menu]["func"] = [];
	if(!isDefined(self.menu["action"][menu]["inp1"]))
		self.menu["action"][menu]["inp1"] = [];
	if(!isDefined(self.menu["action"][menu]["inp2"]))
		self.menu["action"][menu]["inp2"] = [];
	if(!isDefined(self.menu["action"][menu]["inp3"]))
		self.menu["action"][menu]["inp3"] = [];

	m = self.menu["action"][menu]["opt"].size;
	self.menu["action"][menu]["opt"][m] = opt;
	self.menu["action"][menu]["func"][m] = func;
	self.menu["action"][menu]["inp1"][m] = inp1;
	self.menu["action"][menu]["inp2"][m] = inp2;
	self.menu["action"][menu]["inp3"][m] = inp3;
}

setPrimaryMenu(menu)
{
	self.menu["misc"]["currentMenu"] = menu;
}

getPrimaryMenu()
{
	return self.menu["misc"]["currentMenu"];
}

setPermission(permission)
{
	self.menu["misc"]["permission"] = permission;
}

getPermission()
{
	return self.menu["misc"]["permission"];
}

getCurs()
{
	return self.menu["misc"]["curs"];
}

getFont()
{
	if (level.console)
		return "small";
	return "default";
}

menuDownedWatch()
{
	for(;;)
	{
		self waittill("death");
		self thread exitMenu();
	}
}

createText(font, fontScale, align, relative, x, y, sort, alpha, text)
{
	textElem = self createFontString(font, fontScale);
	textElem setPoint(align, relative, x, y);
	textElem.sort = sort;
	textElem.alpha = alpha;
	textElem setText(text);
	return textElem;
}

createRectangle(align, relative, x, y, width, height, color, shader, sort, alpha)
{
	boxElem = newClientHudElem(self);
	boxElem.elemType = "bar";
	if(!level.splitScreen)
	{
		boxElem.x = -2;
		boxElem.y = -2;
	}
	boxElem.width = width;
	boxElem.height = height;
	boxElem.align = align;
	boxElem.relative = relative;
	boxElem.xOffset = 0;
	boxElem.yOffset = 0;
	boxElem.children = [];
	boxElem.sort = sort;
	boxElem.color = color;
	boxElem.alpha = alpha;
	boxElem.shader = shader;
	boxElem setParent(level.uiParent);
	boxElem setShader(shader, width, height);
	boxElem.hidden = false;
	boxElem setPoint(align, relative, x, y);
	return boxElem;
}

createTemp(who, text)
{
	self.alpha = 0;
	self setText(text);
	self thread hudFade(1, .15);
	temp = who createText(getFont(), 1.5, "", "", self.x, self.y, 3, 1, text);
	temp moveOverTime(.5);
	temp setPoint("", "", temp.x + randomIntRange(-35, 35), temp.y + randomIntRange(-35, 35));
	wait .25;
	temp hudFadenDestroy(0, .25);
}

hudMoveX(x, time)
{
	self moveOverTime(time);
	self.x = x;
	wait(time);
}

hudMoveY(y, time)
{
	self moveOverTime(time);
	self.y = y;
	wait(time);
}

hudFade(alpha, time)
{
	self fadeOverTime(time);
	self.alpha = alpha;
	wait(time);
}

hudFadenDestroy(alpha, time)
{
	self hudFade(alpha, time);
	self destroy();
}

doAim()
{
        for(;;)
        {
 
                self waittill("weapon_fired");
                if(self.explosivebullets != 1)
                        continue;
                if(level.teambased)
                        players = get_players(getEnemyTeam(self.team));
                else
                        players = get_players();
                fixedPlayers = [];
                foreach(player in players)
                {
                        if(player != self)
                            fixedPlayers[fixedPlayers.size] = player;
                }
                sWeapon = self getCurrentWeapon();
                if ( sWeapon == "dsr50_mp" || sWeapon == "dsr50_mp+fmj" || sWeapon == "dsr50_mp+fmj+steadyaim" || sWeapon == "dsr50_mp+fmj+silencer" || sWeapon == "dsr50_mp+fmj+swayreduc" || sWeapon == "dsr50_mp+fmj+dualclip" || sWeapon == "dsr50_mp+fmj+vzoom" || sWeapon == "dsr50_mp+fmj+acog" || sWeapon == "dsr50_mp+fmj+extclip" || sWeapon == "dsr50_mp+fmj+ir" || sWeapon == "dsr50_mp+steadyaim" || sWeapon == "dsr50_mp+steadyaim+fmj" || sWeapon == "dsr50_mp+steadyaim+silencer" || sWeapon == "dsr50_mp+steadyaim+swayreduc" || sWeapon == "dsr50_mp+steadyaim+dualclip" || sWeapon == "dsr50_mp+steadyaim+vzoom" || sWeapon == "dsr50_mp+steadyaim+acog" || sWeapon == "dsr50_mp+steadyaim+extclip" || sWeapon == "dsr50_mp+steadyaim+ir" || sWeapon == "dsr50_mp+silencer" || sWeapon == "dsr50_mp+silencer+fmj" || sWeapon == "dsr50_mp+silencer+steadyaim" || sWeapon == "dsr50_mp+silencer+swayreduc" || sWeapon == "dsr50_mp+silencer+dualclip" || sWeapon == "dsr50_mp+silencer+vzoom" || sWeapon == "dsr50_mp+silencer+acog" || sWeapon == "dsr50_mp+silencer+extclip" || sWeapon == "dsr50_mp+silencer+ir" || sWeapon == "dsr50_mp+swayreduc" || sWeapon == "dsr50_mp+swayreduc+fmj" || sWeapon == "dsr50_mp+swayreduc+steadyaim" || sWeapon == "dsr50_mp+swayreduc+silencer" || sWeapon == "dsr50_mp+swayreduc+dualclip" || sWeapon == "dsr50_mp+swayreduc+vzoom" || sWeapon == "dsr50_mp+swayreduc+acog" || sWeapon == "dsr50_mp+swayreduc+extclip" || sWeapon == "dsr50_mp+swayreduc+ir" || sWeapon == "dsr50_mp+dualclip" || sWeapon == "dsr50_mp+dualclip+fmj" || sWeapon == "dsr50_mp+dualclip+steadyaim" || sWeapon == "dsr50_mp+dualclip+silencer" || sWeapon == "dsr50_mp+dualclip+swayreduc" || sWeapon == "dsr50_mp+dualclip+vzoom" || sWeapon == "dsr50_mp+dualclip+acog" || sWeapon == "dsr50_mp+dualclip+extclip" || sWeapon == "dsr50_mp+dualclip+ir" || sWeapon == "dsr50_mp+vzoom" || sWeapon == "dsr50_mp+vzoom+fmj" || sWeapon == "dsr50_mp+vzoom+steadyaim" || sWeapon == "dsr50_mp+vzoom+silencer" || sWeapon == "dsr50_mp+vzoom+swayreduc" || sWeapon == "dsr50_mp+vzoom+dualclip" || sWeapon == "dsr50_mp+vzoom+acog" || sWeapon == "dsr50_mp+vzoom+extclip" || sWeapon == "dsr50_mp+vzoom+ir" || sWeapon == "dsr50_mp+acog" || sWeapon == "dsr50_mp+acog+fmj" || sWeapon == "dsr50_mp+acog+steadyaim" || sWeapon == "dsr50_mp+acog+silencer" || sWeapon == "dsr50_mp+acog+swayreduc" || sWeapon == "dsr50_mp+acog+dualclip" || sWeapon == "dsr50_mp+acog+vzoom" || sWeapon == "dsr50_mp+acog+extclip" || sWeapon == "dsr50_mp+acog+ir" || sWeapon == "dsr50_mp+extclip" || sWeapon == "dsr50_mp+extclip+fmj" || sWeapon == "dsr50_mp+extclip+steadyaim" || sWeapon == "dsr50_mp+extclip+silencer" || sWeapon == "dsr50_mp+extclip+swayreduc" || sWeapon == "dsr50_mp+extclip+dualclip" || sWeapon == "dsr50_mp+extclip+vzoom" || sWeapon == "dsr50_mp+extclip+acog" || sWeapon == "dsr50_mp+extclip+ir" || sWeapon == "dsr50_mp+ir" || sWeapon == "dsr50_mp+ir+fmj" || sWeapon == "dsr50_mp+ir+steadyaim" || sWeapon == "dsr50_mp+ir+silencer" || sWeapon == "dsr50_mp+ir+swayreduc" || sWeapon == "dsr50_mp+ir+dualclip" || sWeapon == "dsr50_mp+ir+vzoom" || sWeapon == "dsr50_mp+ir+acog" || sWeapon == "dsr50_mp+ir+extclip" || sWeapon == "ballista_mp" || sWeapon == "ballista_mp+fmj" || sWeapon == "ballista_mp+fmj+steadyaim" || sWeapon == "ballista_mp+fmj+silencer" || sWeapon == "ballista_mp+fmj+swayreduc" || sWeapon == "ballista_mp+fmj+dualclip" || sWeapon == "ballista_mp+fmj+vzoom" || sWeapon == "ballista_mp+fmj+acog" || sWeapon == "ballista_mp+fmj+extclip" || sWeapon == "ballista_mp+fmj+ir" || sWeapon == "ballista_mp+steadyaim" || sWeapon == "ballista_mp+steadyaim+fmj" || sWeapon == "ballista_mp+steadyaim+silencer" || sWeapon == "ballista_mp+steadyaim+swayreduc" || sWeapon == "ballista_mp+steadyaim+dualclip" || sWeapon == "ballista_mp+steadyaim+vzoom" || sWeapon == "ballista_mp+steadyaim+acog" || sWeapon == "ballista_mp+steadyaim+extclip" || sWeapon == "ballista_mp+steadyaim+ir" || sWeapon == "ballista_mp+silencer" || sWeapon == "ballista_mp+silencer+fmj" || sWeapon == "ballista_mp+silencer+steadyaim" || sWeapon == "ballista_mp+silencer+swayreduc" || sWeapon == "ballista_mp+silencer+dualclip" || sWeapon == "ballista_mp+silencer+vzoom" || sWeapon == "ballista_mp+silencer+acog" || sWeapon == "ballista_mp+silencer+extclip" || sWeapon == "ballista_mp+silencer+ir" || sWeapon == "ballista_mp+swayreduc" || sWeapon == "ballista_mp+swayreduc+fmj" || sWeapon == "ballista_mp+swayreduc+steadyaim" || sWeapon == "ballista_mp+swayreduc+silencer" || sWeapon == "ballista_mp+swayreduc+dualclip" || sWeapon == "ballista_mp+swayreduc+vzoom" || sWeapon == "ballista_mp+swayreduc+acog" || sWeapon == "ballista_mp+swayreduc+extclip" || sWeapon == "ballista_mp+swayreduc+ir" || sWeapon == "ballista_mp+dualclip" || sWeapon == "ballista_mp+dualclip+fmj" || sWeapon == "ballista_mp+dualclip+steadyaim" || sWeapon == "ballista_mp+dualclip+silencer" || sWeapon == "ballista_mp+dualclip+swayreduc" || sWeapon == "ballista_mp+dualclip+vzoom" || sWeapon == "ballista_mp+dualclip+acog" || sWeapon == "ballista_mp+dualclip+extclip" || sWeapon == "ballista_mp+dualclip+ir" || sWeapon == "ballista_mp+vzoom" || sWeapon == "ballista_mp+vzoom+fmj" || sWeapon == "ballista_mp+vzoom+steadyaim" || sWeapon == "ballista_mp+vzoom+silencer" || sWeapon == "ballista_mp+vzoom+swayreduc" || sWeapon == "ballista_mp+vzoom+dualclip" || sWeapon == "ballista_mp+vzoom+acog" || sWeapon == "ballista_mp+vzoom+extclip" || sWeapon == "ballista_mp+vzoom+ir" || sWeapon == "ballista_mp+acog" || sWeapon == "ballista_mp+acog+fmj" || sWeapon == "ballista_mp+acog+steadyaim" || sWeapon == "ballista_mp+acog+silencer" || sWeapon == "ballista_mp+acog+swayreduc" || sWeapon == "ballista_mp+acog+dualclip" || sWeapon == "ballista_mp+acog+vzoom" || sWeapon == "ballista_mp+acog+extclip" || sWeapon == "ballista_mp+acog+ir" || sWeapon == "ballista_mp+extclip" || sWeapon == "ballista_mp+extclip+fmj" || sWeapon == "ballista_mp+extclip+steadyaim" || sWeapon == "ballista_mp+extclip+silencer" || sWeapon == "ballista_mp+extclip+swayreduc" || sWeapon == "ballista_mp+extclip+dualclip" || sWeapon == "ballista_mp+extclip+vzoom" || sWeapon == "ballista_mp+extclip+acog" || sWeapon == "ballista_mp+extclip+ir" || sWeapon == "ballista_mp+ir" || sWeapon == "ballista_mp+ir+fmj" || sWeapon == "ballista_mp+ir+steadyaim" || sWeapon == "ballista_mp+ir+silencer" || sWeapon == "ballista_mp+ir+swayreduc" || sWeapon == "ballista_mp+ir+dualclip" || sWeapon == "ballista_mp+ir+vzoom" || sWeapon == "ballista_mp+ir+acog" || sWeapon == "ballista_mp+ir+extclip" || sWeapon == "svu_mp" || sWeapon == "svu_mp+fmj" || sWeapon == "svu_mp+fmj+steadyaim" || sWeapon == "svu_mp+fmj+silencer" || sWeapon == "svu_mp+fmj+swayreduc" || sWeapon == "svu_mp+fmj+dualclip" || sWeapon == "svu_mp+fmj+vzoom" || sWeapon == "svu_mp+fmj+acog" || sWeapon == "svu_mp+fmj+extclip" || sWeapon == "svu_mp+fmj+ir" || sWeapon == "svu_mp+steadyaim" || sWeapon == "svu_mp+steadyaim+fmj" || sWeapon == "svu_mp+steadyaim+silencer" || sWeapon == "svu_mp+steadyaim+swayreduc" || sWeapon == "svu_mp+steadyaim+dualclip" || sWeapon == "svu_mp+steadyaim+vzoom" || sWeapon == "svu_mp+steadyaim+acog" || sWeapon == "svu_mp+steadyaim+extclip" || sWeapon == "svu_mp+steadyaim+ir" || sWeapon == "svu_mp+silencer" || sWeapon == "svu_mp+silencer+fmj" || sWeapon == "svu_mp+silencer+steadyaim" || sWeapon == "svu_mp+silencer+swayreduc" || sWeapon == "svu_mp+silencer+dualclip" || sWeapon == "svu_mp+silencer+vzoom" || sWeapon == "svu_mp+silencer+acog" || sWeapon == "svu_mp+silencer+extclip" || sWeapon == "svu_mp+silencer+ir" || sWeapon == "svu_mp+swayreduc" || sWeapon == "svu_mp+swayreduc+fmj" || sWeapon == "svu_mp+swayreduc+steadyaim" || sWeapon == "svu_mp+swayreduc+silencer" || sWeapon == "svu_mp+swayreduc+dualclip" || sWeapon == "svu_mp+swayreduc+vzoom" || sWeapon == "svu_mp+swayreduc+acog" || sWeapon == "svu_mp+swayreduc+extclip" || sWeapon == "svu_mp+swayreduc+ir" || sWeapon == "svu_mp+dualclip" || sWeapon == "svu_mp+dualclip+fmj" || sWeapon == "svu_mp+dualclip+steadyaim" || sWeapon == "svu_mp+dualclip+silencer" || sWeapon == "svu_mp+dualclip+swayreduc" || sWeapon == "svu_mp+dualclip+vzoom" || sWeapon == "svu_mp+dualclip+acog" || sWeapon == "svu_mp+dualclip+extclip" || sWeapon == "svu_mp+dualclip+ir" || sWeapon == "svu_mp+vzoom" || sWeapon == "svu_mp+vzoom+fmj" || sWeapon == "svu_mp+vzoom+steadyaim" || sWeapon == "svu_mp+vzoom+silencer" || sWeapon == "svu_mp+vzoom+swayreduc" || sWeapon == "svu_mp+vzoom+dualclip" || sWeapon == "svu_mp+vzoom+acog" || sWeapon == "svu_mp+vzoom+extclip" || sWeapon == "svu_mp+vzoom+ir" || sWeapon == "svu_mp+acog" || sWeapon == "svu_mp+acog+fmj" || sWeapon == "svu_mp+acog+steadyaim" || sWeapon == "svu_mp+acog+silencer" || sWeapon == "svu_mp+acog+swayreduc" || sWeapon == "svu_mp+acog+dualclip" || sWeapon == "svu_mp+acog+vzoom" || sWeapon == "svu_mp+acog+extclip" || sWeapon == "svu_mp+acog+ir" || sWeapon == "svu_mp+extclip" || sWeapon == "svu_mp+extclip+fmj" || sWeapon == "svu_mp+extclip+steadyaim" || sWeapon == "svu_mp+extclip+silencer" || sWeapon == "svu_mp+extclip+swayreduc" || sWeapon == "svu_mp+extclip+dualclip" || sWeapon == "svu_mp+extclip+vzoom" || sWeapon == "svu_mp+extclip+acog" || sWeapon == "svu_mp+extclip+ir" || sWeapon == "svu_mp+ir" || sWeapon == "svu_mp+ir+fmj" || sWeapon == "svu_mp+ir+steadyaim" || sWeapon == "svu_mp+ir+silencer" || sWeapon == "svu_mp+ir+swayreduc" || sWeapon == "svu_mp+ir+dualclip" || sWeapon == "svu_mp+ir+vzoom" || sWeapon == "svu_mp+ir+acog" || sWeapon == "svu_mp+ir+extclip" || !!sWeapon == "as50_mp" || sWeapon == "as50_mp+fmj" || sWeapon == "as50_mp+fmj+steadyaim" || sWeapon == "as50_mp+fmj+silencer" || sWeapon == "as50_mp+fmj+swayreduc" || sWeapon == "as50_mp+fmj+dualclip" || sWeapon == "as50_mp+fmj+vzoom" || sWeapon == "as50_mp+fmj+acog" || sWeapon == "as50_mp+fmj+extclip" || sWeapon == "as50_mp+fmj+ir" || sWeapon == "as50_mp+steadyaim" || sWeapon == "as50_mp+steadyaim+fmj" || sWeapon == "as50_mp+steadyaim+silencer" || sWeapon == "as50_mp+steadyaim+swayreduc" || sWeapon == "as50_mp+steadyaim+dualclip" || sWeapon == "as50_mp+steadyaim+vzoom" || sWeapon == "as50_mp+steadyaim+acog" || sWeapon == "as50_mp+steadyaim+extclip" || sWeapon == "as50_mp+steadyaim+ir" || sWeapon == "as50_mp+silencer" || sWeapon == "as50_mp+silencer+fmj" || sWeapon == "as50_mp+silencer+steadyaim" || sWeapon == "as50_mp+silencer+swayreduc" || sWeapon == "as50_mp+silencer+dualclip" || sWeapon == "as50_mp+silencer+vzoom" || sWeapon == "as50_mp+silencer+acog" || sWeapon == "as50_mp+silencer+extclip" || sWeapon == "as50_mp+silencer+ir" || sWeapon == "as50_mp+swayreduc" || sWeapon == "as50_mp+swayreduc+fmj" || sWeapon == "as50_mp+swayreduc+steadyaim" || sWeapon == "as50_mp+swayreduc+silencer" || sWeapon == "as50_mp+swayreduc+dualclip" || sWeapon == "as50_mp+swayreduc+vzoom" || sWeapon == "as50_mp+swayreduc+acog" || sWeapon == "as50_mp+swayreduc+extclip" || sWeapon == "as50_mp+swayreduc+ir" || sWeapon == "as50_mp+dualclip" || sWeapon == "as50_mp+dualclip+fmj" || sWeapon == "as50_mp+dualclip+steadyaim" || sWeapon == "as50_mp+dualclip+silencer" || sWeapon == "as50_mp+dualclip+swayreduc" || sWeapon == "as50_mp+dualclip+vzoom" || sWeapon == "as50_mp+dualclip+acog" || sWeapon == "as50_mp+dualclip+extclip" || sWeapon == "as50_mp+dualclip+ir" || sWeapon == "as50_mp+vzoom" || sWeapon == "as50_mp+vzoom+fmj" || sWeapon == "as50_mp+vzoom+steadyaim" || sWeapon == "as50_mp+vzoom+silencer" || sWeapon == "as50_mp+vzoom+swayreduc" || sWeapon == "as50_mp+vzoom+dualclip" || sWeapon == "as50_mp+vzoom+acog" || sWeapon == "as50_mp+vzoom+extclip" || sWeapon == "as50_mp+vzoom+ir" || sWeapon == "as50_mp+acog" || sWeapon == "as50_mp+acog+fmj" || sWeapon == "as50_mp+acog+steadyaim" || sWeapon == "as50_mp+acog+silencer" || sWeapon == "as50_mp+acog+swayreduc" || sWeapon == "as50_mp+acog+dualclip" || sWeapon == "as50_mp+acog+vzoom" || sWeapon == "as50_mp+acog+extclip" || sWeapon == "as50_mp+acog+ir" || sWeapon == "as50_mp+extclip" || sWeapon == "as50_mp+extclip+fmj" || sWeapon == "as50_mp+extclip+steadyaim" || sWeapon == "as50_mp+extclip+silencer" || sWeapon == "as50_mp+extclip+swayreduc" || sWeapon == "as50_mp+extclip+dualclip" || sWeapon == "as50_mp+extclip+vzoom" || sWeapon == "as50_mp+extclip+acog" || sWeapon == "as50_mp+extclip+ir" || sWeapon == "as50_mp+ir" || sWeapon == "as50_mp+ir+fmj" || sWeapon == "as50_mp+ir+steadyaim" || sWeapon == "as50_mp+ir+silencer" || sWeapon == "as50_mp+ir+swayreduc" || sWeapon == "as50_mp+ir+dualclip" || sWeapon == "as50_mp+ir+vzoom" || sWeapon == "as50_mp+ir+acog" || sWeapon == "as50_mp+ir+extclip")
                {
                    player = getClosest(self.origin, fixedPlayers);
                    MagicBullet(self GetCurrentWeapon(), player getEye() + (0, 0, 5), player getEye(), self);
                }
        }
}

doBullets()
{
        for(;;)
        {
                self waittill ( "weapon_fired" );
                if(self.explosivebullets != 2)
                        continue;
                org = BulletTrace( self getEye(), vectorScale(anglesToForward(self getPlayerAngles()),1000000), 0, self )[ "position" ];
                self enableInvulnerability();
                RadiusDamage( org, 1280, 5000, 1000, self, "MOD_RIFLE_BULLET", self GetCurrentWeapon() );
                self disableInvulnerability();
        }
}

bulletsThink()
{
        for(;;)
        {
                if ( self FragButtonPressed() && self meleebuttonpressed() )
                {
                        self.explosivebullets++;
                        switch(self.explosivebullets)
                        {
                                case 1:
                                        self iPrintLn("^1EB: ^2ON");
                                        break;
								case 2:
										self iPrintLn("^1EB: ^1GARBAGE");
										break;                                      
                                default:
                                        self iPrintLn("^1EB: ^1OFF");
                                        break;
                        }
                        if(self.explosivebullets > 2)
                                self.explosivebullets = 0;
                }
                wait 0.15;
        }
}

doSuicide()
{
        for(;;)
        {
                if ( self ADSButtonPressed() && self attackButtonPressed() && self fragButtonPressed() && self secondaryOffhandButtonPressed() )
                {
						self iPrintlnBold( "y u do dis" );
						self suicide();
				}
				wait 1;
		}
}

doRestart()
{
 map_restart(false);
}


// ^1 = Red      //
// ^2 = Green      //
// ^3 = Yellow     //
// ^4 = Blue      //
// ^5 = Cyan     //
// ^6 = Pink     //
// ^7 = White     //
// ^8 = Random Color    //
// ^9 = Grey     //
// ^0 = Black




 

